package controle;

import java.util.Observable;
import java.util.Observer;
import java.util.Vector;

import javax.swing.JList;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

import abstraction.Cours;

/** controleur qui gère l'affichage de la liste des groupes
 * 
 * @author PICOSSON
 *
 */
public class ControlJListGroupes implements Observer, ListSelectionListener {
	private JList<String> liste;
	private Cours modele;

	public ControlJListGroupes(Cours modele, JList<String> liste) {
		this.modele = modele;
		this.liste = liste;
		String[] data = { "-" };
		this.liste.setListData(data);
		this.liste.setSelectedIndex(0);
	}

	public void update(Observable o, Object message) {
		Integer iMessage = (Integer) message;
		if (iMessage == Cours.CHANGEMENT_MODULE_COURANT
				|| iMessage == Cours.CHANGEMENT_GROUPES) {
			int moduleCourant = this.modele.getModuleCourant();
			Vector<String> data = new Vector<String>();
			if (moduleCourant != -1) {
				data = this.modele
						.getGroupeNames(moduleCourant);
				data.add(0, "-");
				this.liste.setListData(data);
			} else {
				data.add("-");
				this.liste.setListData(data);
			}
			
			if (this.modele.getGroupeCourant() != -1){
				this.liste.setSelectedValue(this.modele.findGroupe(this.modele.getGroupeCourant()).getNom(), true);
			}
			else
				this.liste.setSelectedIndex(0);
			this.liste.repaint();			
		}
	}

	public void valueChanged(ListSelectionEvent e) {
		if (this.liste.getSelectedIndex() != -1 && !this.liste.getSelectedValue().equals("-"))
			this.modele.setGroupeCourant(this.modele.findGroupe(this.modele.getModuleCourant(), this.liste.getSelectedValue()).getId_groupe());
		else if (this.liste.getSelectedIndex() != -1)
			this.modele.setGroupeCourant(-1);
	}
}